#include <vector>
#include <iostream>
#include <fstream>

using namespace std;


int main() {
	ifstream input("in.txt", ifstream::in);
	int n;
	input >> n;
	vector<vector<double>> R(n);//логарифмированные стоимости
	vector <double> d;//мин расстояния от вершины '1'
	vector <int> prnt(n);//граф для восстановления цикла

	for(int i = 0; i < n; ++i)
		for(int j = 0; j < n; ++j) {
			double itoj;
			input >> itoj;
			if (itoj != 0)
				R[i].push_back(-log(itoj));
			else R[i].push_back(- std::numeric_limits<int>::infinity());
		}
	
	input.close();

	d.push_back(0);
	for(int i=1; i<n; ++i)
		d.push_back(std::numeric_limits<int>::infinity());

	for(int p = 1; p < n; ++p)
		for(int i = 0; i < n; ++i)
			for(int j = 0; j < n; ++j)
				if ( d[i] + R[i][j] < d[j] ) {
					d[j] = d[i] + R[i][j];
					prnt[i] = j;
				}
	int i = 0, j = 0;
	while( i<n && j<n && d[i] + R[i][j] >= d[j] ) {
		j++;
		if (j == n) {
			i++;
			j=0;
		}
	}
	if (i != n) {
		int tmp = i;
		do {
			cout << tmp+1 << ' ';
			tmp = prnt[tmp];
		} while (tmp != i);
		cout << i + 1 << endl;
	}
	else cout << "No" << endl;
	
	system("pause");
	return 0;
}